The invention relates generally to serial bus communication between two devices, and relates more particularly to synchronous communication established so as to permit effective power conservation in the system.
In recent years much attention has been paid to power conservation in personal electronic devices including personal computers. Among the design goals is the provision of the greatest possible battery life. Efforts to make computers smaller have led to pressure to make the battery smaller, which leads to a battery of lesser capacity and thus works against the provision of longer battery life. There is also an upward pressure on the speed of the processor, and as a general matter faster processors consume more power. It is thus a daunting task to provide satisfactory battery life, and every possible area of power savings has to be investigated and considered. Wherever any two system components connect, for example at two ends of a cable or communications channel, it is desirable to design each of the two components so that the manner of their interaction favors the efforts to reduce power consumption (and thus the efforts to maximize battery life).
In the area of user input devices such as keyboards and pointing devices, however, the designer of a computer system does not have the luxury of designing the components at both ends of the cable, for the simple reason that the keyboard or mouse is of a fixed design, conforming to a fixed interface specification. The computer system may be purchased by the consumer in one store and the external keyboard or mouse in another store.
Those skilled in the art, faced with the goal of conserving power, find that many measures can contribute to that goal, among them the measure of putting electronics xe2x80x9cto sleepxe2x80x9d when they are not needed. Alternatively, a productive measure is to cause an item of electronics to run at a slow clock rate most of the time and to run the item at its full clock rate only when absolutely necessary. For example, in the case of circuitry that responds to user inputs at a keyboard, it may be desired to allow the circuitry to go to sleep between keystrokes, or to allow it to reduce its clock speed drastically between keystrokes. Similarly in the case of circuitry that responds to user inputs at a mouse or other pointing device, it may be desirable to allow the circuitry to go to sleep or to run slowly between pointing device inputs.
As discussed above, in the case where the system designer is able to design the keyboard or pointing device, any number of techniques may be used to permit such power conservation. One such technique is described in U.S. Pat. No. 5,585,792, assigned to the same assignee as the assignee of the present invention. But in cases where nothing is known about the user input device other than that it conforms to a historical standard such as the PS/2 standard discussed herein, then power conservation is much more difficult. For example, if a system (or part of a system such as a user input device interface) goes xe2x80x9cto sleepxe2x80x9d or slows its clock rate substantially, the question arises what will happen when a user presses a key or moves a pointing device. With most commercially available keyboards and pointing devices, what happens is that a scancode is generated by the user input device. The scancode is communicated via a synchronous serial data line to the user input device interface, and the expectation is that the interface will receive the scancode and pass it along to the operating system via a BIOS (basic input/output system). The difficulty arises that it takes some non-zero interval of time for the system to xe2x80x9cwake upxe2x80x9d. During this interval, the entirety of the scancode will have come and gone. The practical effort of this is that the keystroke or pointing device movement is lost. From the user""s point of view, this tradeoff is quite unacceptablexe2x80x94even if power is to be saved, the user will not tolerate lost keystrokes.
In some system, the effort to conserve power leads to a system in which the interface for the user input devices (e.g. a keyboard controller or pointing device controller) will quite literally go to sleep between all keystrokes. It awakens long enough to process one scancode, and then goes back to sleep until the next scancode. But in such a system, if the time required for awakening of the controller were to lead to the loss of a scancode, the practical result would be that all scancodes are lost. This is quite unworkable.
There is thus a great need for an approach according to which a personal electronic system such as a person computer, or a user input interface for such a system, may transition to a low-power mode between user inputs, and may transition to a full-power mode to handle user inputs, without loss of user input information, and to accomplish these results even with the use of user input devices about which nothing is known other than their compliance with historical interface specifications.
A system is described in which the Master can stop its clock and go into a low-power state (for power conservation reasons) at arbitrary times. Before going into the stopped-clock or low-power mode, the Master checks that the serial bus is idle (defined as both Clock and Data lines being xe2x80x9cHighxe2x80x9d). A latch circuit is provided which is active when the master is in low-power mode. A latch circuit watches for the very first negative-going clock pulse (from the slave), and its configuration is such that when latched, it holds the clock line low. Holding the clock line low prompts the slave to discontinue efforts to send the data. Stated differently, the slave will not conclude that it had successfully sent its data, and this prompts the slave to retain a copy of its data for later resending.